package cn.edu.jmu.oelp.service;

import cn.edu.jmu.oelp.pojo.EntityRelation;

import java.util.List;

public interface EntityRelationService {
    List<EntityRelation> findAll();
    /**
     *
     * @param id 标注实体间关系的id
     * @return 返回该id的关系
     */
    EntityRelation findById(long id);


    /**
     *
     * @param id 起始标注实体节点的id
     * @return 返回从该实体出发的关系列表
     */
    List<EntityRelation> findByStartEntityId(long id);

    /**
     *
     * @param id 终止标注实体节点的id
     * @return 返回到该实体终止的关系列表
     */
    List<EntityRelation> findByEndEntityId(long id);

    /**
     *
     * @param type 标注实体之间关系的类型
     * @return 返回该类型的关系列表
     */
    List<EntityRelation> findByType(String type);

    /**
     *
     * @param startEntityId 起始节点的id
     * @param endEntityId 终止节点的id
     * @return 该起始节点和该终止节点之间的关系列表
     */
    List<EntityRelation> findByStartEntityIdAndEndEntityId(long startEntityId, long endEntityId);

    /**
     *
     * @param startEntityId 起始节点id
     * @param endEntityId 终止节点id
     * @param type 关系类型
     * @return 返回符合条件的关系实体
     */
    EntityRelation findByStartEntityIdAndEndEntityIdAndType(long startEntityId, long endEntityId, String type);
    /**
     *
     * @param entityRelation 实体关系实例
     * @return 返回添加成功后的参数
     */
    int addRelation(EntityRelation entityRelation);
    /**
     *
     * @param id 关系ID
     * @return 返回删除成功后的参数
     */
    int delRelation(int id);
    /**
     *
     * @param entityRelation 实体关系实例
     * @return 返回修改成功后的参数
     */
    int updateRelation(EntityRelation entityRelation);
}
